home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-04 / lineed.zip / LINEED2.C < prev    next >
C/C++ Source or Header  |  1992-04-05  |  7KB  |  236 lines

  1. #include "lineed.h"
  2.  
  3. #ifdef __TURBOC__
  4.   #define _fastcall pascal
  5. #endif
  6.  
  7. #define ORIGMSG "Original msg "
  8. #define VERSION "1.06"
  9.  
  10. char * pascal stripcr(char *);
  11. void   pascal hitreturn(void);
  12. void   pascal cls (void);
  13. char   pascal inkey (void);
  14. char   pascal carrchk (void);
  15. char   pascal fossil (char function, char arg);
  16. char   pascal printm (char *text);
  17. void   cdecl  deinitialize (void);
  18. char * pascal genin (char length,char password,char caps,char hot,char type);
  19. long   pascal getxbbstime(void);
  20. char   pascal specialkey(char);
  21. char   pascal specialmod(void);
  22. char * pascal rstrip(char *);
  23. char * pascal lstrip(char *);
  24. int    cdecl  break_handler(void);
  25. void   pascal chat(void);
  26. void   pascal rawdir            (char *,char);
  27. int    pascal checkafile        (char *);
  28. char   pascal readtext          (char *);
  29. int    cdecl  printfm           (char *,...);
  30. int    pascal do_args           (int argc, char *argv[]);
  31. word   pascal enter             (word);
  32. void   pascal patchup           (word,int);
  33. void   pascal delete            (void);
  34. struct line * pascal dls_store  (struct line *);
  35. struct line * pascal find       (word);
  36. void   pascal search            (void);
  37. word   pascal list              (void);
  38. word   pascal save              (word,word);
  39. void   pascal load              (char);
  40. int    pascal menu_select       (void);
  41. void   pascal wrap              (char *,char *);
  42. word   pascal findlast          (void);
  43. void   pascal printheader       (void);
  44. struct line * pascal newbuffer  (void);
  45. void   pascal deleteline        (word);
  46. void   pascal quoter            (void);
  47. void   pascal edit              (word);
  48. void   pascal view              (char);
  49. void   pascal movelines         (void);
  50. void   pascal status            (char);
  51. void   pascal quit              (char);
  52. void   pascal formpara          (void);
  53. int           aprintf           (char *str,...);
  54.  
  55. extern void _fastcall (*pause_mtask)(void);
  56. extern void pascal set_mtask (void);
  57.  
  58. extern char   noslice;
  59. extern char   usebios;
  60. extern char   quoting;
  61. extern char   chatting;
  62. extern long   timelimit;
  63. extern word   baud;
  64. extern char   pauser;
  65. extern char   graphics;
  66. extern char   numlines;
  67. extern word   lines;
  68. extern long   startt;
  69. extern char   commport;
  70. extern char   chatted;
  71. extern char   fname[133];
  72. extern char   mode;
  73. extern char   username[37];
  74. extern struct ffblk filestat;
  75. extern char   uwidth;
  76.  
  77. struct line {
  78.   char text[81];
  79.   char terminator[3];
  80.   word num;
  81.   struct line *next;
  82.   struct line *prior;
  83. };
  84.  
  85. extern struct line * start;
  86. extern struct line * last;
  87. extern char temporary[257];
  88. extern union REGS rg;
  89. extern char ansii[8];
  90. extern char from[36];
  91. extern char to[36];
  92. extern char date[20];
  93. extern char subj[72];
  94. extern char thisto[36];
  95. extern word maxlines;
  96.  
  97.  
  98.  
  99. char pascal specialmod (void) {
  100.  
  101.  char arg;
  102.  int register x;
  103.  
  104.       for (x=0;x<1024;x++) {
  105.           arg=carrchk();
  106.           if (arg & 1) break;
  107.           (*pause_mtask)();
  108.       }
  109.       if (!(arg & 1)) return 0;
  110.       arg=(fossil(RECVWAIT,arg));
  111.       if (arg!='[') return 0;
  112.       for (x=0;x<1024;x++) {
  113.           arg=carrchk();
  114.           if (arg & 1) break;
  115.           (*pause_mtask)();
  116.       }
  117.       if (!(arg & 1)) return 0;
  118.       arg=(fossil(RECVWAIT,arg));
  119.       if ((arg!='1') && (arg!='C') && (arg!='D') && (arg!='A') && (arg!='B')) return 0;
  120.       if (arg=='C') return 8;
  121.       if (arg=='D') return 24;
  122.       if (arg=='A') return 20;
  123.       if (arg=='B') return 25;
  124.       for (x=0;x<1024;x++) {
  125.           arg=carrchk();
  126.           if (arg & 1) break;
  127.           (*pause_mtask)();
  128.       }
  129.       if (!(arg & 1)) return 0;
  130.       arg=(fossil(RECVWAIT,arg));
  131.       if ((arg!='C') && (arg!='D') && (arg!='A') && (arg!='B')) return 0;
  132.       if (arg=='C') return 24;
  133.       if (arg=='D') return 8;
  134.       if (arg=='A') return 20;
  135.       if (arg=='B') return 25;
  136.  
  137.       return 0;
  138. }
  139.  
  140.  
  141. int cdecl printfm (char *string,...) {
  142.  
  143.  static char buffer[318];
  144.  
  145.  va_list ap;
  146.  va_start(ap,string);
  147.  vsprintf(buffer,string,ap);
  148.  va_end(ap);
  149.  return(printm(buffer));
  150. }
  151.  
  152.  
  153. char * pascal lstrip (char *a) {   /* Remove leading spaces and tabs */
  154.  
  155.   register char *p = a;
  156.  
  157.  
  158.   while(*p == ' ' || *p == '\t') p++;
  159.   if(*p) {
  160.     if(p > a) memmove(a,p,strlen(p) + 1);
  161.   }
  162.   else *a = 0;
  163.  
  164.   return a;
  165. }
  166.  
  167.  
  168.  
  169. char * pascal stripcr (char *a) {  /* Remove trailing crs and lfs */
  170.  
  171.   register int x;
  172.  
  173.  
  174.   x = strlen(a);
  175.   while(x && (a[x - 1] == '\n' || a[x - 1] == '\r')) a[--x] = 0;
  176.   return a;
  177. }
  178.  
  179.  
  180.  
  181. int pascal do_args (int argc, char *argv[]) {
  182.  
  183.     int register x;
  184.  
  185.     if(!stricmp(argv[1],"-H")) goto Help;
  186.     if (argc<2) return 0;
  187.     for(x=2;x<argc;x++) {
  188.         if(*argv[x] != '-') {
  189.             aprintf("\n\07Invalid switch `%s' -- use '-' prefix\n",argv[x]);
  190.             continue;
  191.         }
  192.         switch ((int)toupper(argv[x][1])) {
  193.             case 'M':   noslice = 1;
  194.                         break;
  195.             case 'S':   mode = (atoi(&argv[x][2]) == 0);
  196.                         break;
  197.             case 'G':   graphics = atoi(&argv[x][2]);
  198.                         break;
  199.             case 'L':   numlines = atoi(&argv[x][2]);
  200.                         break;
  201.             case 'W':   uwidth = atoi(&argv[x][2]);
  202.                         break;
  203.             case 'C':   commport = atoi(&argv[x][2]);
  204.                         break;
  205.             case 'B':   baud = (word)atol(&argv[x][2]);
  206.                         break;
  207.             case 'T':   timelimit = atol(&argv[x][2])*60L;
  208.                         break;
  209.             case 'Z':   maxlines = (word)atol(&argv[x][2]);
  210.                         if(maxlines<1) maxlines = (word)65535;
  211.                         break;
  212.             case 'V':   usebios = atoi(&argv[x][2]);
  213.                         break;
  214.             case 'H':
  215. Help:
  216.                         aprintf("\nCommand Line Arguments:\n\n"
  217.                                 "First argument always filename\n"
  218.                                 "-S<#> Secure mode (default 0, not secure)\n"
  219.                                 "-G<#> Graphics (default 0, none)\n"
  220.                                 "-L<#> Length (default 24)\n"
  221.                                 "-W<#> Width (default 80)\n"
  222.                                 "-C<#> Commport (default 0 (COM1))\n"
  223.                                 "-B<#> Baudrate (default 0 (local))\n"
  224.                                 "-M    No multitasker timeslicing\n"
  225.                                 "-T<#> Time (default 30 mins)\n"
  226.                                 "-V<#> Videomethod (0 = direct, 1 = bios)\n"
  227.                                 "-Z<#> Maximum#lines (default 65535)\n"
  228.                                 "-H    This Help\n");
  229.                         exit(0);
  230.             default:    aprintf("\nUnknown switch `%s'\n",argv[x]);
  231.                         break;
  232.         }
  233.     }
  234.     return 1;
  235. }
  236.